【数据结构与算法】之深入解析常用的五大算法设计策略

一、分治

① 基本思想

  • 在计算机科学中,分治法是一种很重要的算法,字面上的解释是“分而治之”,就是将一个难以直接解决的大问题,分割成 n 个规模较小的子问题,这些子问题相互独立,且与原问题相同,然后各个击破,分而治之。这个技巧是很多高效算法的基础,如排序算法(快速排序,归并排序),傅立叶变换(快速傅立叶变换)等。
  • 能用分治法的基本特征:
    • 问题缩小到一定规模容易解决;
    • 分解成的子问题是相同种类的子问题,即该问题具有最优子结构性质(递归思想);
    • 分解而成的小问题在解决之后要可以合并;
    • 子问题是相互独立的,即子问题之间没有公共的子问题。
  • “分解而成的小问题在解决之后要可以合并”是能分治的关键,解决子问题之后如果不能合并从而解决大问题的话,那么凉凉。如果满足前两个条件,不满足“解决之后合并”,即具有最优子结构的话,可以考虑贪心或者 dp。
  • 如果不满足“子问题是相互独立的,即子问题之间没有公共的子问题”的话,也可以用分治。但是在分治的过程中,有大量的重复子问题被多次的计算,拖慢了算法效率,这样的问题可以考虑 dp(大量重复子问题)。
  • 分治法常常与递归结合使用:通过反复应用分治,可以使子问题与原问题类型一致而规模不断缩小,最终使子问题
  • 24
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 39
    评论
大数据分析及处理方法全文共3页,当前为第1页。大数据分析及处理方法全文共3页,当前为第1页。大数据分析及处理方法 大数据分析及处理方法全文共3页,当前为第1页。 大数据分析及处理方法全文共3页,当前为第1页。 大数据的处理 周涛博士说:大数据处理数据时代理念的三大转变:要全体不要抽样,要效率不要肯定精确,要相关不要因果。 具体的大数据处理方法其实有许多,但是依据长时间的实践,笔者总结了一个基本的大数据处理流程,并且这个流程应当能够对大家理顺大数据的处理有所关心。整个处理流程可以概括为四步,分别是采集、导入和预处理、统计和分析,以及挖掘。 采集 大数据的采集是指利用多个数据库来接收发自客户端(Web、App或者传感器形式等)的数据,并且用户可以通过这些数据库来进行简洁的查询和处理工作。比方,电商会使用传统的关系型数据库MySQL和Oracle等来存储每一笔事务数据,除此之外,Redis和MongoDB这样的NoSQL数据库也常用于数据的采集 在大数据的采集过程中,其主要特点和挑战是并发数高,因为同时有可能会有成千上万的用户来进行访问和操作,比方火车票售票网站和淘宝,它们并发的访问量在峰值时到达上百万,所以需要在采集端部署大量数据库才能支撑。并且如何在这些数据库之间进行负载均衡和分片确实是需要深入的思索和设计。 导入/预处理 虽然采集端本身会有许多数据库,但是假如要对这些海量数据进行有效的分析,还是应当将这些来自前端的数据导入到一个集中的大型分布式数据库,或者分布式存储集群,并且可以在导入基础上做一些简洁的清洗和预处理工作。也有一些用户会在导入时使用来自Twitter的Storm来对数据进行流式计算,来满足部分业务的实时计算需求。 大数据分析及处理方法全文共3页,当前为第2页。大数据分析及处理方法全文共3页,当前为第2页。 导入与预处理过程的特点和挑战主要是导入的数据量大,每秒钟的导入量常常会到达百兆,甚至千兆级别。 统计/分析 统计与分析主要利用分布式数据库,或者分布式计算集群来对存储于其内的海量数据进行一般的分析和分类汇总等,以满足大多数常见的分析需求,在这方面,一些实时性需求会用到EMC 的GreenPlum、Oracle的Exadata,以及基于MySQL的列式存储Infobright等,而一些批处理,或者基于半结构化数据的需求可以使用Hadoop。 统计与分析这部分的主要特点和挑战是分析涉及的数据量大,其对系统资源,特殊是I/O会有极大的占用。 挖掘 与前面统计和分析过程不同的是,数据挖掘一般没有什么预先设定好的主题,主要是在现有数据上面进行基于各种算法的计算,从而起到预报(Predict)的效果,从而实现一些高级别数据分析的需求。比较典型算法有用于聚类的K-Means、用于统计学习的SVM和用于分类的Naive Bayes,主要使用的工具有Hadoop的Mahout等。 该过程的特点和挑战主要是用于挖掘的算法很冗杂,并且计算涉及的`数据量和计算量都很大,还有,常用数据挖掘算法都以单线程为主。 大数据分析的五个基本方面 1. Analytic Visualizations(可视化分析) 不管是对数据分析专家还是一般用户,数据可视化是数据分析工具最基本的要求。可视化可以直观的展示数据,让数据自己说话,让观众听到结果。 2. Data Mining Algorithms(数据挖掘算法) 可视化是给人看的,数据挖掘就是给机器看的。集群、分割、孤立点分析还有其他的算法让我们深入数据内部,挖掘价值。这些算法不仅要处理大数据的量,也要处理大数据的速度。 大数据分析及处理方法全文共3页,当前为第3页。大数据分析及处理方法全文共3页,当前为第3页。 3. Predictive Analytic Capabilities(预报性分析能力) 数据挖掘可以让分析员更好的理解数据,而预报性分析可以让分析员依据可视化分析和数据挖掘的结果做出一些预报性的推断。 4. Semantic Engines(语义引擎) 我们知道由于非结构化数据的多样性带来了数据分析的新的挑战,我们需要一系列的工具去解析,提取,分析数据。语义引擎需要被设计成能够从"文档"中智能提取信息。 5. Data Quality and Master Data Management(数据质量和数据管理) 数据质量和数据管理是一些管理方面的最正确实践。通过标准化的流程和工具对数据进行处理可以保证一个预先定义好的高质量的分析结果。 假如大数据真的是下一个重要的技术革新的话,我们最好把精力关注在大数据能给我们带来的好处,而不仅仅是挑战。 大数据分析及处理方法全文共3页,当前为第2页。 大数据分析及处理方法全文共3页,当前为第2页。 大数据分析及处理方法全文共3页,当前为第3页。 大数据分析

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 39
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

╰つ栺尖篴夢ゞ

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值